package model.analityka;

import java.util.ArrayList;
import java.util.List;

import model.annotation.DomainFactory;
import system.Data;



/**
 * Fabryka Cechy
 */
@DomainFactory
//TODO 2.2 testy do zastanowienia
public class CechaFabryka {
	
	public Cecha stworz (
			CechaDefinicja cechaDefinicja,
			double[] dane,
			String[] daneEtykiety) {
		List<CechaDana> cechaDane = new ArrayList<CechaDana>();
		for (int i = 0; i < dane.length; i++) {
			CechaDana cechaDana = new CechaDana(daneEtykiety[i], dane[i]);
			cechaDane.add(cechaDana);
		}
		Cecha cecha = new Cecha(cechaDefinicja, cechaDane);
		
		return cecha;
	}
	
	public Cecha stworz (
			CechaDefinicja cechaDefinicja,
			double[] dane) {
		String[] daneEtykiety = new String[dane.length];
		for (int i = 0; i < dane.length; i++) {
			daneEtykiety[i] = cechaDefinicja.getNazwa() + "[" + i + "]";
		}
		Cecha cecha = stworz(cechaDefinicja, dane, daneEtykiety);
		
		return cecha;
	}

	public Cecha stworz(CechaDefinicja cechaDefinicja, List<Data> kursyDaty) {
		double[] dane = new double[kursyDaty.size()];
		String[] daneEtykiety = new String[kursyDaty.size()];

	    int i = 0;
	    for (Data notowanieData: kursyDaty) {
		    dane[i] = cechaDefinicja.obliczWartosc(notowanieData);
		    daneEtykiety[i] = "dana: " + notowanieData;
	    	i++;
	    }

		Cecha cecha = stworz (cechaDefinicja, dane, daneEtykiety);
		return cecha;
	}

}
